package com.joinway.framework.admin.core.service.table;

import java.util.List;
import java.util.Map;

import com.joinway.framework.admin.core.bean.DataRecord;
import com.joinway.framework.bean.view.View;
import com.joinway.framework.core.plugin.Plugin;

public interface ITableService extends Plugin {

	/**
	 * 根据request对象中的参数查询数据
	 * @param table 要查询的表名
	 * @param params 传入的查询参数，params中key值为要查询的字段名(JavaBean格式),value为要查询的值
	 * @return [查询结果列表,全表数据个数]
	 * @throws Exception
	 */
	DataRecord find(String table, String query, Integer page, Integer rows, Map<String, String[]> params) throws Exception;
	
	/**
	 * 根据request对象中的参数查询数据
	 * @param table 要保存的表名
	 * @param params 传入的保存参数，params中key值为要保存的字段名(JavaBean格式),value为要保存的值
	 * @return 保存结果
	 * @throws Exception
	 */
	View save(String table, String idField, Map<String, String> params) throws Exception;
	
	/**
	 * 删除数据
	 * @param table 目标表名
	 * @param statusColumn 如果是物理删除，传null，否则传入代表删除标志的表名(JavaBean格式)
	 * @param ids 要删除数据的主键值
	 * @return 删除结果
	 * @throws Exception
	 */
	int delete(String table, String idField, List<String> idValues) throws Exception;
	
	int delete(String table, String idField, List<String> idValues, String softField, String softFieldValue) throws Exception;
	
	String getTableName();
	
}

